package com.blog.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author 蒲鑫
 * @function 功能：和数据库有关的相关操作
 * @date 2023年6月1日
 */
public class BaseDao {
	private static final String URL = "jdbc:mysql://localhost:3306/weblog?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false"; //数据库url
	private static final String USERNAME = "root";//数据库用户名
	private static final String PASSWORD = "123456";//数据库密码
	//静态代码块 内的内容只会在 BaseDao第一次运行时，执行一次（避免反复加载驱动）
	static{
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("请检查数据库的jar包");
			e.printStackTrace();
		}
	}
	
	/**
	 * @author 蒲鑫
	 * @function 功能：获取与数据库的连接
	 * @parameter 传入参数：
	 * @return 返回值：一个sql连接对象Connection
	 * @date 2023年5月24日
	 */
	public static Connection getCon() {
		Connection con = null; 
		try {
			con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (SQLException e) {
			System.out.println("获取数据库连接失败");
			e.printStackTrace();
		}
		return con;
	}
	
	/**
	 * @author 蒲鑫
	 * @function 功能：关闭所有流
	 * @parameter 传入参数：结果集/ResultSet，预解析sql/Statement，sql连接通道/Connection
	 * @return 返回值：
	 * @date 2023年5月24日
	 */
	public static void  closeAll(ResultSet res,Statement stmt,Connection con) {
		if(res != null) { 
			try {
				res.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		if(stmt != null) { 
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		if(con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * @author 蒲鑫
	 * @function 功能：查询表的全部条数
	 * @parameter 传入参数：需要查询的表名
	 * @return 返回值：返回查询表的全部条数
	 * @date 2023年5月31日
	 */
	public int selectAllNum(String tableName) {
		return 0;
	}
}
